package com.coderman.infosys.auth.domain.gataway;

import com.coderman.infosys.auth.domain.bo.authority.AuthorityBO;
import com.coderman.infosys.auth.domain.bo.authority.RoleAuthAggregateBO;
import com.coderman.infosys.auth.domain.bo.authority.UserAuthAggregateBO;
import com.coderman.infosys.auth.domain.bo.role.RoleBO;
import com.coderman.infosys.plat.auth.common.page.PageBO;

import java.util.List;

/**
 * Description: 权限查询网关
 * date: 2022/1/9
 *
 * @author shenshuai
 * @version 1.0.0
 * @since JDK 1.8
 */
public interface AuthorityQueryGataWay {
    /**
     * 通过权限code查询这个权限具体包括哪些权限信息
     *
     * @param authCode
     * @return
     */
    AuthorityBO getByAuthCode(String tenant, String authCode);


    /**
     * 通过用户和系统维度查询用户在这个系统拥有的资源信息
     * @param userId
     * @param systemCode
     * @return
     */
    UserAuthAggregateBO queryAuthorityWithUser(String tenant, Long userId, String systemCode);


    /**
     * 根据角色编码获取角色权限信息
     * @param roleCode
     * @return
     */
    RoleAuthAggregateBO queryAuthorityWithRole(String tenant, String roleCode);


    /**
     * 分页获取权限记录
     * @param pageBO
     * @return
     */
    List<AuthorityBO> getPageList(PageBO pageBO);

}
